package bubblesort;

import common.CreateTestArrUtils;

import java.util.Arrays;

/**
 * @author 兴趣使然黄小黄
 * @version 1.0
 * @date 2023/8/13 2:12
 * 冒泡排序
 * 平均时间复杂度 O(n^2)
 */
public class BubbleSort {

    /**
     * 接收一个 arr 并进行冒泡排序
     */
    public static void bubbleSort(int[] arr) {
        if (arr == null) {
            return;
        }
        for (int i = 0; i < arr.length - 1; i++) {
            boolean flag = false; // 标记该轮排序是否发生交换
            for (int j = 0; j < arr.length - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                    flag = true; // 发生了交换
                }
                if (!flag) {
                    break;
                }
            }
        }
    }

    public static void main(String[] args) {
        int[] descArr = CreateTestArrUtils.createDescArr(100);
        System.out.println("原数组 arr=" + Arrays.toString(descArr));
        bubbleSort(descArr);
        System.out.println("排序后数组 arr=" + Arrays.toString(descArr));
    }
}
